package com.gxuwz.util;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 
 * @Description: 数据库连接工具类
 * 使用dbcp数据库连接池
 * 
 * @author: 刘玉霜    
 * @date: 2017年11月26日 下午7:11:48
 */
public class DBUtil {
	
	private static final Log log = LogFactory.getLog(DBUtil.class);
	
	/** 数据库连接配置文件的名字，需放在src目录下 */
    private static final String configFile = "dbcp.properties";
 
    private static DataSource dataSource;
 
    static {
        Properties dbProperties = new Properties();
        try {
            dbProperties.load(DBUtil.class.getClassLoader().getResourceAsStream(configFile));
            dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
        } catch (Exception e) {
            log.error("初始化连接池失败：" + e);
        }
    }
 
    /**
     * 
     * <p>Description: 获取数据库连接，用完后记得关闭</p>
     * <p>Company: 梧州学院</p> 
     * @author 刘玉霜
     * @date 2017年11月26日 下午7:16:03
     * @return
     */
    public static final Connection get() {
        Connection conn = null;
        try {       	
            conn = dataSource.getConnection();
            // log.info("获取数据库连接成功...");
        } catch (SQLException e) {
            log.error("获取数据库连接失败：" + e);
        }
        return conn;
    }
 
    /**
     * 
     * <p>Description: 关闭数据库连接</p>
     * <p>Company: 梧州学院</p> 
     * @author 刘玉霜
     * @date 2017年11月26日 下午7:16:30
     * @param conn
     */
    public static void close(Connection conn) {
        try {
            if (conn != null && !conn.isClosed()) {
                conn.setAutoCommit(true);
                conn.close();
            }
        } catch (SQLException e) {
            log.error("关闭数据库连接失败：" + e);
        }
    }
    
    public static void main(String[] args) {
		// 测试数据库连接
    	get();
	}
 
}